package com.bysj.sausys.service;

import com.bysj.sausys.beans.PageQuery;
import com.bysj.sausys.beans.PageResult;
import com.bysj.sausys.model.SysDicParams;

import java.util.List;
import java.util.Map;

/**
 * 字典Service接口
 *
 * @author WangZK
 */
public interface ISysDicParamsService {

    /**
     * 保存字典类型
     *
     * @param sysDicParams
     * @param username
     */
    void saveDicType(SysDicParams sysDicParams, String username);

    /**
     * 更新字典类型
     *
     * @param sysDicParams
     * @param username
     */
    void updateDicType(SysDicParams sysDicParams, String username);

    /**
     * 分页获取字典类型
     *
     * @param pageQuery
     * @return
     */
    PageResult getDicTypeForPage(PageQuery pageQuery);

    /**
     * 根据id获取字典表数据
     *
     * @param id
     * @return
     */
    SysDicParams findById(Integer id);

    /**
     * 根据id删除字典分类
     *
     * @param id
     */
    void deleteDicType(Integer id);

    /**
     * 设置字典表数据状态
     *
     * @param id
     * @param status
     * @param username
     */
    void setDicParamsStatus(Integer id, int status, String username);

    /**
     * 保存字典数据
     *
     * @param sysDicParams
     * @param username
     */
    void saveDicParams(SysDicParams sysDicParams, String username);

    /**
     * 更新字典数据
     *
     * @param sysDicParams
     * @param username
     */
    void updateDicParams(SysDicParams sysDicParams, String username);

    /**
     * 分页获取字典数据
     *
     * @param pmappname
     * @param pageQuery
     * @return
     */
    PageResult getDicParamsForPage(String pmappname, PageQuery pageQuery);

    /**
     * 根据项值查找字典数据
     *
     * @param categoryId
     * @return
     */
    SysDicParams findByPmname(String categoryId);

    /**
     * 根据字典类型获取字典数据
     *
     * @param pmappname
     * @return
     */
    List<SysDicParams> getDicParamsByPmappname(String pmappname);

    /**
     * 获取所有启用的字典分类
     *
     * @return
     */
    List<SysDicParams> getAllDicType();

    /**
     * 根据字典类型获取双层级联的字典数据
     *
     * @param pmappname
     * @return
     */
    List<Map> getDoubleLayerCascadeDicParams(String pmappname);
}
